package com.unitd.modules.sys.service;

import com.unitd.frame.mybatis.core.service.IBaseService;
import com.unitd.modules.sys.entity.SysUser;

import java.util.List;
import java.util.Map;

/**
 * @desc 用户表业务逻辑控制接口类
 * @filename SysUserService.java
 * @copyright www.unitd.com
 * @author Hudan
 * @version 1.0
 * @date 2017-04-08
 */
public interface ISysUserService extends IBaseService<SysUser, String> {

	/**
	 * @desc 根据主键ID获取对应的详情信息
	 * @param id 主键ID
	 * @return 机构详情
	 */
	SysUser findBy(String id);

	/**
	 * @desc 查询指定用户的所有权限
	 * @param userId 用户主键ID
	 * @return List
	 */
	List<String> findAllPerms(String userId);

	/**
	 * @desc 查询指定用户的所有菜单ID
	 * @param userId 用户ID
	 * @return List
	 */
	List<String> findAllMenuId(String userId);

	/**
	 * @desc 根据用户名,查询系统用户
	 * @param userName 用户名称
	 * @return SysUser
	 */
	SysUser findByUserName(String userName);

	/**
	 * @desc 根据用户信息,修改用户密码
	 * @param userDataMap 用户信息(主要的key为: userId、password、newPassword)
	 * @return int
	 */
	int updatePassword(Map<String, Object> userDataMap);

	/**
	 * @desc 根据用户信息, 修改用户最后登录时间
	 * @param userDataMap 用户信息(主要的key为: userId、loginIp)
	 * @return int
	 */
	int updateLoginDate(Map<String, Object> userDataMap);

	/**
	 * @desc 根据选择的机构编号,获取该机构下的用户的最大sort值并+1
	 * @param orgNo 机构No
	 * @return Integer
	 */
	Integer getMaxSortByOrgNo(String orgNo);

	/**
	 * @desc 处理数据保存/更新
	 * @param param 前端传送的需要处理的数据
	 * @return Integer
	 */
	Integer doEdit(Map<String, Object> param);

	/**
	 * @desc 根据ID串删除机构
	 * @param ids 需要删除的详情信息ID串,多个ID之间用,分割
	 * @return Integer
	 */
	Integer doDelete(String ids);
}